using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("ApplicationMgr")]
	public class ApplicationMgr : MonoBehaviour
	{
		[Attribute38("ApplicationMgr.SchedulerContext")]
		public class SchedulerContext : MonoClass
		{
			public float m_startTime => method_2<float>("m_startTime");

			public float m_secondsToWait => method_2<float>("m_secondsToWait");

			public bool m_realTime => method_2<bool>("m_realTime");

			public object m_userData => method_3<object>("m_userData");

			public float m_secondsWaited => method_2<float>("m_secondsWaited");

			public SchedulerContext(IntPtr address, string className)
				: base(address, className)
			{
			}

			public SchedulerContext(IntPtr address)
				: this(address, "SchedulerContext")
			{
			}

			public float EstimateTargetTime()
			{
				return method_11<float>("EstimateTargetTime", Array.Empty<object>());
			}
		}

		public static ApplicationMode DEFAULT_MODE => MonoClass.smethod_6<ApplicationMode>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "DEFAULT_MODE");

		//public static ApplicationMode s_mode
		//{
		//	get=> MonoClass.smethod_6<ApplicationMode>(TritonHs.MainAssemblyPath, "", "HearthstoneApplication", "s_mode");
		//	set=> MonoClass.smethod_611<ApplicationMode>(TritonHs.MainAssemblyPath, "", "HearthstoneApplication", "s_mode",value);
		//}
		//public static ApplicationMode s_mode => MonoClass.smethod_6<ApplicationMode>(TritonHs.MainAssemblyPath, "", "HearthstoneApplication", "s_mode");


		public bool m_exiting => method_2<bool>("m_exiting");

		public bool m_focused => method_2<bool>("m_focused");

		public float m_lastResumeTime => method_2<float>("m_lastResumeTime");

		public float m_lastPauseTime => method_2<float>("m_lastPauseTime");

		public bool m_hasResetSinceLastResume => method_2<bool>("m_hasResetSinceLastResume");

		public static float AUTO_RESET_ON_ERROR_TIMEOUT => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "AUTO_RESET_ON_ERROR_TIMEOUT");

		public bool m_resetting => method_2<bool>("m_resetting");

		public float m_lastResetTime => method_2<float>("m_lastResetTime");

		public ApplicationMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public ApplicationMgr(IntPtr address)
			: this(address, "ApplicationMgr")
		{
		}

		public static ApplicationMgr Get()
		{
			return MonoClass.smethod_15<ApplicationMgr>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "Get", Array.Empty<object>());
		}

		public static ApplicationMode GetMode()
		{
			return MonoClass.smethod_14<ApplicationMode>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "GetMode", Array.Empty<object>());
		}

		public static bool IsInternal()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "IsInternal", Array.Empty<object>());
		}

		public static bool IsPublic()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "IsPublic", Array.Empty<object>());
		}

		public static bool UseDevWorkarounds()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "UseDevWorkarounds", Array.Empty<object>());
		}

		public static AndroidStore GetAndroidStore()
		{
			return MonoClass.smethod_14<AndroidStore>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "GetAndroidStore", Array.Empty<object>());
		}

		public static bool UsingStandaloneLocalData()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "UsingStandaloneLocalData", Array.Empty<object>());
		}

		public static string GetStandaloneLocalDataPath()
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "GetStandaloneLocalDataPath");
		}

		public static void InitializeMode()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "InitializeMode");
		}

		public static int SetWindowTextW(IntPtr hWnd, string text)
		{
			return MonoClass.smethod_14<int>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "SetWindowTextW", new object[2] { hWnd, text });
		}

		public static IntPtr FindWindow(string className, string windowName)
		{
			return MonoClass.smethod_14<IntPtr>(TritonHs.MainAssemblyPath, "", "ApplicationMgr", "FindWindow", new object[2] { className, windowName });
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void OnDestroy()
		{
			method_8("OnDestroy");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void OnGUI()
		{
			method_8("OnGUI");
		}

		public void OnApplicationQuit()
		{
			method_8("OnApplicationQuit");
		}

		public void OnApplicationFocus(bool focus)
		{
			method_8("OnApplicationFocus", focus);
		}

		public void OnApplicationPause(bool pauseStatus)
		{
			method_8("OnApplicationPause", pauseStatus);
		}

		public bool IsResetting()
		{
			return method_11<bool>("IsResetting", Array.Empty<object>());
		}

		public void Reset()
		{
			method_8("Reset");
		}

		public void ResetAndForceLogin()
		{
			method_8("ResetAndForceLogin");
		}

		public void ResetAndGoBackToNoAccountTutorial()
		{
			method_8("ResetAndGoBackToNoAccountTutorial");
		}

		public bool ResetOnErrorIfNecessary()
		{
			return method_11<bool>("ResetOnErrorIfNecessary", Array.Empty<object>());
		}

		public void Exit()
		{
			method_8("Exit");
		}

		public bool IsExiting()
		{
			return method_11<bool>("IsExiting", Array.Empty<object>());
		}

		public bool HasFocus()
		{
			return method_11<bool>("HasFocus", Array.Empty<object>());
		}

		public float LastResetTime()
		{
			return method_11<float>("LastResetTime", Array.Empty<object>());
		}

		public void UnloadUnusedAssets()
		{
			method_8("UnloadUnusedAssets");
		}

		public void ProcessScheduledCallbacks()
		{
			method_8("ProcessScheduledCallbacks");
		}

		public void Initialize()
		{
			method_8("Initialize");
		}

		public void InitializeUnity()
		{
			method_8("InitializeUnity");
		}

		public void InitializeGame()
		{
			method_8("InitializeGame");
		}

		public void InitializeWindowTitle()
		{
			method_8("InitializeWindowTitle");
		}

		public void InitializeOptionValues()
		{
			method_8("InitializeOptionValues");
		}

		public void ResetImmediately(bool forceLogin, bool forceNoAccountTutorial)
		{
			method_8("ResetImmediately", forceLogin, forceNoAccountTutorial);
		}

		public void FireFocusChangedEvent()
		{
			method_8("FireFocusChangedEvent");
		}
	}
}
